package 线程1;
//线程的创建
//线程创建的方式,本质都相同,都是借助Thread类,在内核中创建新的PCB,加入到内核的双向链表中
//只不过,指定线程要执行的任务的方式不一样
//单纯的java语法层面上的区别

//1.通过继承Thread,重写run.
class MyThread2 extends Thread{
    @Override
    public void run() {
        while(true){
            try {
                System.out.println("hello Thread!");
                Thread.sleep(1000);
                //休眠:让当前的线程暂时放弃CPU,等待一段时间之后,再重新参与调用
                //参数单位是毫秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }

    }
}
public class ThreadDemo2 {
    public static void main(String[] args) {
        Thread t = new MyThread2();
        t.start();
        //都是死循环,这两个可以同时执行吗?
//   t.start()     可以的,因为这两个是并发的关系,两个执行流
//        t.run();
        //下面就不会执行了,得等run()执行完之后才能执行,此处只有一个执行流.
        while(true){
            System.out.println("hello main");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }



    }
}
